';
}).filter(Boolean).join('');
}
// 6) Top Trending - from hot_sale_product
var hotProducts = homeData.hot_sale_product || [];
if (hotProducts.length >= 2) {
renderProductRow('trendingScroll', hotProducts.slice(0, 16));
}
// 7) Best Sellers - from best_product
var bestProducts = homeData.best_product || [];
if (bestProducts.length >= 2) {
renderProductRow('bestsellerScroll', bestProducts.slice(0, 16), 'bestseller');
}
// 8) New Arrivals - from new_product
var newProducts = homeData.new_product || [];
if (newProducts.length >= 2) {
renderProductRow('newArrivalsScroll', newProducts.slice(0, 16), 'new');
}
// Navigation handled by global-nav.js?v=20260624
// Show empty hints for sections with no data
var emptyHint = '
No products yet
';
if (!hotProducts.length) {
var ts = document.getElementById('trendingScroll');
if (ts && !ts.children.length) ts.innerHTML = emptyHint;
}
if (!bestProducts.length) {
var bs = document.getElementById('bestsellerScroll');
if (bs && !bs.children.length) bs.innerHTML = emptyHint;
}
if (!newProducts.length) {
var na = document.getElementById('newArrivalsScroll');
if (na && !na.children.length) na.innerHTML = emptyHint;
}
} catch(err) {
console.warn('Home API load failed, using static fallback:', err);
}
}
/* ===== Init ===== */
try { if (typeof updateCartBadge === 'function') updateCartBadge(); } catch(e) {}
// Load Shop By Occasion cards (nav handled by global-nav.js?v=20260624
(async function loadOccasionCards() {
try {
var res = await fetch('/api/v1/product-themes');
var json = await res.json();
var themes = (json && json.data) || [];
if (!themes.length) return;
themes.sort(function(a, b) { return a.sort_num - b.sort_num; });
var themePageMap = { 'america-250':'america250.html', 'father-day':'fathers-day.html', 'pet-lovers':'pet-lover.html', 'family':'family-gifts.html', 'sports':'sports.html', 'Soccer Nation 2026':'soccer-nation.html', 'zodiac-star-signs':'zodiac-star-signs.html', 'graduation-2026':'graduation-2026.html', 'wedding':'wedding.html' };
var scroll = document.getElementById('occasionScroll');
if (!scroll) return;
var items = themes.map(function(t) {
var banner = t.banner_thumb || t.banner || t.picture || t.image || '';
var src = banner ? resolveImg(banner) : '';
var name = t.title || t.name || '';
var link = themePageMap[t.name] || 'products.html?theme=' + (t.name || t.id);
if (!src) return '';
return '' +
'' +
'